home *** CD-ROM | disk | FTP | other *** search
/ MacWorld 1999 June / Macworld (1999-06).dmg / Shareware World / Info / For Developers / MacZoop2.0.sea / MacZoop2.0 / Required Classes / ZCommander.h < prev    next >
Text File  |  1999-02-11  |  3KB  |  110 lines

  1. /*************************************************************************************************
  2. *
  3. *
  4. *            MacZoop - "the framework for the rest of us"         
  5. *
  6. *
  7. *
  8. *            ZCommander.h            -- an object for handling commands
  9. *
  10. *
  11. *
  12. *
  13. *
  14. *            © 1996, Graham Cox
  15. *
  16. *
  17. *
  18. *
  19. *************************************************************************************************/
  20.  
  21. #pragma once
  22.  
  23. #ifndef __ZCOMMANDER__
  24. #define __ZCOMMANDER__
  25.  
  26. #ifndef __ZCOMRADE__
  27. #include    "ZComrade.h"
  28. #endif
  29.  
  30. #ifndef __ZOBJECTARRAY__
  31. #include    "ZObjectArray.h"
  32. #endif
  33.  
  34. #include    <balloons.h>
  35.  
  36. class    ZCommander;
  37. class    ZDialog;
  38.  
  39. // set up streaming stuff:
  40.  
  41. DEFINECLASSID( ZCommander, 'zcmd' );
  42.  
  43.  
  44. typedef ZObjectList ZCommanderList;
  45.  
  46. // class def:
  47.  
  48. class    ZCommander : public ZComrade
  49. {
  50. protected:
  51.     ZCommander*        itsBoss;
  52.     ZCommanderList*    itsUnderlings;
  53.     
  54. public:
  55.     ZCommander( ZCommander* aBoss );
  56.     ZCommander();
  57.     virtual ~ZCommander();
  58.  
  59.     virtual void    HandleCommand( const short menuID, const short itemID);
  60.     virtual void    HandleCommand( const long theCommand );
  61.     virtual void    UpdateMenus();
  62.     virtual void    HandleAppleEvent(    AEEventClass aeClass, AEEventID aeID,
  63.                                         AppleEvent* aeEvt, AppleEvent* reply );
  64.  
  65.     virtual void    Idle();
  66.     virtual void    Type( const char theKey, const short modifiers );
  67.     virtual void    SendMessage( long aMessage, void* msgData );
  68.     virtual void    SendMessage( ZMessage* aMessage );
  69.     virtual void    DoTimer( long timerID ) {};
  70.     
  71.     virtual void    DoSuspend();
  72.     virtual void    DoResume();
  73.     
  74.     virtual Boolean    GetBalloonHelp( const Point mouseIn,
  75.                                     Rect* rectOut,
  76.                                     Point* tipOut,
  77.                                     HMMessageRecord* hmOut ) { return FALSE; };
  78.     
  79.     virtual void    DoCut() { DoCopy(); DoClear(); };
  80.     virtual void    DoCopy() {};
  81.     virtual void    DoPaste() {};
  82.     virtual void    DoClear() {};
  83.     virtual void    DoSelectAll() {};
  84.     virtual Boolean CanPasteType() { return FALSE; };
  85.     
  86.     virtual ZDialog*    OpenSubDialog( const short dlogID );
  87.     
  88.     virtual void    ContextualMenuClick( Point globalMouse ) {};
  89.     
  90.     virtual ZCommander*    GetHandler() { return this; };
  91.     inline    ZCommander*    GetBoss(){ return itsBoss; };
  92.     inline    ZCommanderList*    GetUnderlings() { return itsUnderlings; };
  93.     
  94. // streaming:
  95.  
  96.     virtual void    WriteToStream( ZStream* aStream );
  97.     virtual void    ReadFromStream( ZStream* aStream );
  98.     
  99. protected:
  100.  
  101.     virtual void    AddUnderling( ZCommander* anUnderling );
  102.     virtual void    RemoveUnderling( ZCommander* anUnderling );
  103. };
  104.  
  105.  
  106. // windows and the application are derived from this. It implements a single entity in the
  107. // "chain of command". You can subclass this to make any object that can handle commands,
  108. // though more usually you will subclass windows.
  109.  
  110. #endif